#include <my_header.h>
// fork创建一个子进程，两个进程访问同一段共享内存，
// 共享内存里保存一个整形数，父子进程用for循环的方式。
// 每次对这个整形数字加1，父子进程各循环1000万次。
// 加完后打印一下共享内存里的数字，看看是多少？
/* Usage: ./3_ftok_loop */
int main(int argc, char *argv[]){                                  
    key_t keytag = ftok("./3_ftok_loop", 10);

    int shmid = shmget(keytag, 4096, IPC_CREAT | 0600);
    ERROR_CHECK(shmid, -1, "shmget");

    int *p = (int *)shmat(shmid, NULL, 0);
    ERROR_CHECK(p, NULL, "shamt");
    
    p[0] = 0;

    int son_fd = fork();
    ERROR_CHECK(son_fd, -1, "fork");
   
    if(son_fd == 0)
    {
        for(int i=0; i<10000000; i++)
        {
            p[0]++;
        }
    }
    else{
        for(int i=0; i<10000000; i++)
        {
            p[0]++;
        }
        wait(NULL);
        
        printf("%d\n", p[0]);
    }
    
    return 0;
}


